Pour le projet de Data Vizualisation, nous avons choisi comme jeu de données les buts marqués par Cristiano Ronaldo pendant toute sa carrière. Notre présentation consiste à montrer contre quelles équipes Cristiano Ronaldo a le plus marqué.
Pour obtenir ces statistiques, on a extrait ces données du site transfermarkt Le script python qui fait l’extraction se trouve dans le notebook scrapGoals.ipynb et le dataset resultant est goals.csv (tous ces documents se trouvent sur ce GitHub)
Le dataset correspond aux buts marqués par Cristiano Ronaldo depuis le début de sa carrière professionnelle en club. (Nous n’avons pas pris en compte les buts en sélection nationale) De plus, les équipes contre qui Ronaldo a joué sans jamais marquer ne sont pas représetés dans le dataset.
Ce dataset contient cinq colonnes qui sont:
La competition
L’équipe de Cristiano Ronaldo
L’équipe adversaire
A domicile ou à l’éxterieur
Le nombre des buts marquées dans le match.
Voici un apercu du jeu de données : Le tableau est interactif pour que vous puissiez afficher les informations qui vous conviennent
Nous avons trié le dataset selon les équipes adverses afin d’avoir le compte des buts de Ronaldo par adversaire. Nous n’avons exclu aucun adversaire, même si certains n’ont joué contre l’équipe de Ronaldo qu’une seule fois. Sont représentés ci-dessous le nombre de buts marqués par Cristiano Ronaldo contre chacun de ses adversaires. Il faut noter qu’il est normal que les équipes figurant en haut du graphe sont majoritairement espagnoles car Ronaldo a passé la majeure partie de sa carrière au Real Madrid. Nous avons choisi de présenter cette information sous forme de graphe lollipop pour la clarté de la lecture, le fait que nous comparons une variable numérique à une variable catégorique. Le graphe est bien sur trié pour améliorer la compréhension du lecteur.
# réorganisation des données en 3 colonnes: le nombre de buts contre chaque équipe, le nombre de matchs à domicile et le nombre de matchs à l'extérieur.
data<-data%>%
group_by(against)%>%
summarise( ng = sum(number.of.goals), a = sum(home.away=="A"), h = sum(home.away=="H") )
# Tri en fonction du nombre de buts
data<-data[order(data$ng, decreasing = FALSE), c(1,2,3,4)]
#Création du graphe Lollipop
p<-data%>%
mutate(against = factor(against, against))%>%
ggplot(aes(x = against, y = ng, text=paste("home:",h,"\naway:",a,"\n#goals:",ng), sort = FALSE))+
xlab("Adversaire")+ #axe vertical
ylab("nombre des buts")+ #axe horizontal
geom_segment( xend=1:nrow(data), yend =1:nrow(data)*0)+ #méthode de contruction du lollipop
geom_point()+ #ajout du gros point au bout des segments
coord_flip()
ggplotly(p, tooltip = "text")
Le nombre de buts marqués par adversaire n’étant pas toujours très pertinent (les adversaires n’ont pas toutes jouées le même nombre de matchs face à l’équipe de Ronaldo), nous avons décidé de présenter le nombre moyen de buts marqués par adversaire. Cette information permet de déterminer sur le long terme si Ronaldo avait tendance à plus marquer contre certains adversaires plutôt que d’autres. Afin de ne pas fausser les statistiques avec des adversaires n’ayant joué que très peu de fois contre l’équipe de Ronaldo, nous avons décidé d’éliminer certains équipes de cette représentation. En effet, si Ronaldo marque 4 buts en un seul match face à une équipe qu’il n’a joué qu’une seule fois de sa carrière, cela ne donne que très peu d’information.
data = read.csv("goals.csv", sep = ";")
original = data;
#memes etapes que pour le premier graphe
data<-data%>%
group_by(against)%>%
summarise( ng = sum(number.of.goals), a = sum(home.away=="A"), h = sum(home.away=="H")) %>%
filter(a+h>4) #on filtre sur les adversaires ayant joué au minimum 5 fois contre Ronaldo
data$ng<- round(data$ng/(data$a+data$h),digits=2); #On transorme la colonne nombre de buts marqués en colonne moyenne des buts marqués
data<-data[order(data$ng, decreasing = FALSE), c(1,2,3,4)]
p<-data%>%
mutate(against = factor(against, against))%>%
ggplot(aes(x = against, y = ng, text=paste("home:",h,"\naway:",a,"\n#goals:",ng), sort = FALSE))+
xlab("Adversaire")+
ylab("nombre des buts")+
geom_segment( xend=1:nrow(data), yend =1:nrow(data)*0)+
geom_point()+
coord_flip()
ggplotly(p, tooltip = "text")
Nous avons aussi voulu représenter les buts marqués par Ronaldo en fonction de la compétition. Pour cela, nous avons choisi d’utiliser un Treemap permettant de facilement visualiser les compétititions prédominantes. Lorque vous cliquez sur une compétition, vous pourrez voir les équipes avec lesquelles Ronaldo a marqué dans chaque compétition (en passant votre souris au dessus du nom de l’équipe).
data <- original
p<- data%>%
group_by(compitition, for.)%>%
summarise(goals = sum(number.of.goals))%>%
treemap(index =c("compitition", "for."),
vSize = "goals", type = "index", draw = FALSE);
d3tree3(p, rootname = "Goals per competition & team")